/*
 * @Description:
 * @Version:
 * @Author: Troubadour
 * @Date: 2022-07-09 18:45:44
 * @LastEditors: Troubadour
 * @LastEditTime: 2022-07-11 19:51:47
 */

#ifndef  __HX711_H__
#define  __HX711_H__

#include "main.h"


#define  HX711_DOU_IN               HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_9)
#define  HX711_CLK_OUT(n)           if(n) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET); \
                                    else  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);

// (供电电压 / ADC分辨率) * 模块称重上限值kg
#define  HX711_Voltage                  (3.3)
#define  HX711_AdcBit                   (1<<23)
#define  HX711_UPPER                    5
//

// 内置初始值
#define  HX711_IN_VALUE                 8721000u
// 初始化滤波参数，建议开启，推荐值20，该值越大，初始化时间越久
#define  HX711_INIT_FILTER_VALUE        0u
// 称重滤波参数，建议开启，推荐值3，该值越大，滤波时间越久
#define  HX711_WEIGHT_FILTER_VALUE      3u

typedef struct
{
    uint32_t Init_Value;
    uint32_t Data;
    uint8_t Ready;
    double RelyValue;
}HX711_TypeDef;


void HX711_Init(void);
void HX711_GetWeight(void);
double HX711_GET_KG(uint32_t WeightData);

#endif  /* __HX711_H__ */


